From: Jonas Dreßler Date: Thu, 25 Feb 2021 10:50:44 +0000 (+0100) Subject: workspace: Iterate windowSlots directly when allocating X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~616^2^2~154 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=e75f3a8aed2054671643c9be3133fb58e3e60330;p=gnome-shell.git workspace: Iterate windowSlots directly when allocating We can save a little bit of time in this loop by iterating directly over the windowSlots array instead of iterating through children and then performing a search for the windowSlot. This saves more time and we only spend 2.2 ms instead of 2.3 ms in vfunc_allocate() now. Part-of: --- diff --git a/js/ui/workspace.js b/js/ui/workspace.js index 4fa113bac..37b13a46b 100644 --- a/js/ui/workspace.js +++ b/js/ui/workspace.js @@ -626,19 +626,12 @@ var WorkspaceLayout = GObject.registerClass({ const inSessionTransition = this._overviewAdjustment.value <= ControlsState.WINDOW_PICKER; - for (const child of container) { + const nSlots = this._windowSlots.length; + for (let i = 0; i < nSlots; i++) { + const [x, y, width, height, child] = this._windowSlots[i]; if (!child.visible) continue; - // The fifth element in the slot array is the WindowPreview - const index = this._windowSlots.findIndex(s => s[4] === child); - if (index === -1) { - log('Couldn\'t find child %s in window slots'.format(child)); - child.allocate(childBox); - continue; - } - - const [x, y, width, height] = this._windowSlots[index]; const windowInfo = this._windows.get(child); if (windowInfo.metaWindow.showing_on_its_workspace()) {